package org.jtwig.support; import junit.framework.AssertionFailedError; import org.apache.commons.lang3.builder.ToStringBuilder; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.unitils.reflectionassert.ReflectionAssert; public class MatcherUtils { public static <T> Matcher<? super T> theSameBean (T input) { return (Matcher<? super T>) theSame(input); } public static <T> Matcher<? extends T> theSame(final T input) { return new BaseMatcher<T>() { @Override public boolean matches(Object item) { try { ReflectionAssert.assertReflectionEquals(item, input); return true; } catch (AssertionFailedError e) { return false; } } @Override public void describeTo(Description description) { description.appendValue(ToStringBuilder.reflectionToString(input)); } @Override public void describeMismatch(Object item, Description description) { description.appendValue(ToStringBuilder.reflectionToString(item)); } }; } }